
/* STANDARD LIBRARY */
#include<cstdio>
#include<stdlib.h>
#include<iostream>
#include<string>
#include<math.h>

/* ADDITIONAL LIBRARY */
#include"constants.h" // constants
#include"supToGSL.h"
#include"yyt05Funcs.h"

/* SET OF FUNCTIONS TO SOLVE */
#ifndef DECLARATIONS_yyt05Set
#define DECLARATIONS_yyt05Set

class yyt
{
public:
	double sdelta, J, t, U, beta; // parameters
	unsigned int L, nEqu;
	yytFunctions *yytF;
	Parameters *par;
//	double BDelta, chi, m, d, mu; // variables

public:
	yyt(Parameters *Par, int numberOfEquation);
	~yyt();
//	virtual void setX0(Parameters *X0) = 0;
//	virtual void onePoint(double *y, int i, int j) = 0;
//	virtual void oneLayer (double *y) = 0;
//	virtual double* sumation() = 0;
//	virtual int sumDE() = 0;
	void clear(double *t) { for(unsigned int i=0; i<nEqu; i++) { t[i]=0.; } }
};

class yytGA : public yyt
{
protected:
	Parameters *X0;
	double gs;
	double dgtdm;
	double dgtdd;
	double dgsdm;
	double dgsdd;
	double BDelta_d;
	double BDelta_af;
//	double dEdgt;
//	double dEdgs;

public:
	yytGA(Parameters *Par, int _nEqu, Parameters *X0);
	~yytGA() { }
	void setX0(Parameters *X0);
//	void sumation(double *y, void (*f)(double *, int, int), unsigned int N);
	void onePoint(double *y, int i, int j);
	double* sumationAll();
//	void onePointDE(double *y, int i, int j);
//	int sumDE();
};

#endif
